package _01_ArrayBasic;
/**
 * 就是把某一个数组中的某些数据复制到 另外一个数组中的某个位置上去
 * 思考 : 如何实现?
 * 涉及到的未知点 : 某个数组,某些数据,另一个数组,某个位置
 * 需要的必备数据 :
 * 1.源数组
 * 2.源数组起始位置
 * 3.目标数组
 * 4.目标数组起始位置
 * 5.复制元素的个数
 * 
 * 而起始位置也可以是包含,也可以是不包含
 * 比如起始位置是2 ,取三个数据
 * 包含 就是 : 2,3,4 下标对应的数据
 * 不包含 就是 : 3,4,5 下标对应的数据
 *
 * System类中提供了一个复制数组的方法
 * arraycopy中的起始位置是包含关系
 * 由于是替换式复制,并且传递的是引用类型
 * 所以不需要返回值,调用处的数组 也会更改
 * 
 * @author lenovo
 * @Date 2020年6月30日
 * @Time 下午9:32:41
 */
public class Array_06 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int[] src = { 2, 3, 4, 5, 6, 7, 8 };
		int[] dest = { 11, 12, 13, 14, 15, 16, 17, 18 };

//		System.arraycopy(src, 2, dest, 3, 3);
		arraycopy(src, 2, dest, 3, 3);
		for (int i : dest) {
			System.out.println(i);
		}
//		11
//		12
//		13
//		4
//		5
//		6
//		17
//		18

	}

	public static void arraycopy(int[] src, int srcPos, int[] dest, int destPos, int length) {
		// 复制个数,意味着循环次数
		// 把src的起始值上的数据,赋值给dest数组起始值对应的位置
		// 两个起始值依次递增
		for (int i = 0; i < length; i++) {
			// destPos++;
			// srcPos++;
			dest[destPos] = src[srcPos];
			// 包含起始值 就先赋值 再递增
			// 不包含起始值 就先递增 再赋值
			destPos++;
			srcPos++;
		}
	}

}
